<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        
        <meta name="author" content="隐星魂 (Roy.Sun)">
        
        <link rel="shortcut icon" href="../../../img/favicon.ico">
        <title>工程配置指南 - 玄武操作系统</title>
        <link href="../../../css/bootstrap.min.css" rel="stylesheet">
        <link href="../../../css/font-awesome.min.css" rel="stylesheet">
        <link href="../../../css/base.css" rel="stylesheet">
        <link rel="stylesheet" href="https://cdn.staticfile.org/highlight.js/10.0.3/styles/color-brewer.min.css">

        <script src="../../../js/jquery-1.10.2.min.js" defer></script>
        <script src="../../../js/bootstrap.min.js" defer></script>
        <script src="https://cdn.staticfile.org/highlight.js/10.0.3/highlight.min.js"></script>
        <script>hljs.initHighlightingOnLoad();</script> 
    </head>

    <body>
        <div class="navbar fixed-top navbar-expand-lg navbar-dark bg-primary">
            <div class="container">
                <a class="navbar-brand" href="../../..">玄武操作系统</a>
                <!-- Expander button -->
                <button type="button" class="navbar-toggler" data-toggle="collapse" data-target="#navbar-collapse">
                    <span class="navbar-toggler-icon"></span>
                </button>

                <!-- Expanded navigation -->
                <div id="navbar-collapse" class="navbar-collapse collapse">
                        <!-- Main navigation -->
                        <ul class="nav navbar-nav">
                            <li class="navitem">
                                <a href="../../.." class="nav-link">介绍</a>
                            </li>
                            <li class="navitem">
                                <a href="../../../license/" class="nav-link">开源协议</a>
                            </li>
                            <li class="dropdown">
                                <a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown">应用手册 <b class="caret"></b></a>
                                <ul class="dropdown-menu">
                                    
<li>
    <a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/01.%E7%AE%80%E4%BB%8B/" class="dropdown-item">简介</a>
</li>
                                    
<li>
    <a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/02.%E7%B3%BB%E7%BB%9F%E5%9F%BA%E6%9C%AC%E6%9E%B6%E6%9E%84/" class="dropdown-item">系统基本架构</a>
</li>
                                    
<li>
    <a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/03.%E6%9E%84%E5%BB%BA%E7%B3%BB%E7%BB%9F/" class="dropdown-item">构建系统</a>
</li>
                                    
<li>
    <a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/04.%E5%90%AF%E5%8A%A8%E6%B5%81%E7%A8%8B/" class="dropdown-item">启动流程</a>
</li>
                                    
<li>
    <a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/05.%E5%9F%BA%E6%9C%AC%E7%BA%A6%E5%AE%9A/" class="dropdown-item">基本约定</a>
</li>
                                    
<li>
    <a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/06.%E4%B8%AD%E6%96%AD%E6%8E%A7%E5%88%B6/" class="dropdown-item">中断控制</a>
</li>
                                    
<li>
    <a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/07.%E8%B0%83%E5%BA%A6%E5%99%A8/" class="dropdown-item">调度器</a>
</li>
                                    
<li>
    <a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/08.%E7%BA%BF%E7%A8%8B/" class="dropdown-item">线程</a>
</li>
                                    
<li>
    <a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/09.%E7%94%B5%E6%BA%90%E7%AE%A1%E7%90%86/" class="dropdown-item">电源管理</a>
</li>
                                    
<li>
    <a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/10.%E8%BD%AF%E4%BB%B6%E5%AE%9A%E6%97%B6%E5%99%A8/" class="dropdown-item">软件定时器</a>
</li>
                                    
<li>
    <a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/11.%E9%94%81/" class="dropdown-item">锁</a>
</li>
                                    
<li>
    <a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/12.%E5%90%8C%E6%AD%A5/" class="dropdown-item">同步</a>
</li>
                                    
<li>
    <a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/13.%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86/" class="dropdown-item">内存管理</a>
</li>
                                    
<li>
    <a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/14.%E7%8E%84%E6%AD%A6C%E5%BA%93/" class="dropdown-item">玄武C库</a>
</li>
                                </ul>
                            </li>
                            <li class="dropdown active">
                                <a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown">快速开发指南 <b class="caret"></b></a>
                                <ul class="dropdown-menu">
                                    
  <li class="dropdown-submenu">
    <a href="#" class="dropdown-item">S32k</a>
    <ul class="dropdown-menu">
            
<li>
    <a href="../1.XuanWuOS-envsetup-guide/" class="dropdown-item">开发环境搭建指南</a>
</li>
            
<li>
    <a href="./" class="dropdown-item active">工程配置指南</a>
</li>
    </ul>
  </li>
                                    
  <li class="dropdown-submenu">
    <a href="#" class="dropdown-item">Stm32</a>
    <ul class="dropdown-menu">
            
<li>
    <a href="../../stm32/1.XuanWuOS-envsetup-guide/" class="dropdown-item">开发环境搭建指南</a>
</li>
            
<li>
    <a href="../../stm32/2.XuanWuOS-project-setup-guide/" class="dropdown-item">工程配置指南</a>
</li>
            
<li>
    <a href="../../stm32/3.XuanWuOS-xwbd-atkh743/" class="dropdown-item">正点原子阿波罗H743开发板上手指南</a>
</li>
            
<li>
    <a href="../../stm32/4.XuanWuOS-xwbd-fk429m/" class="dropdown-item">反客F429核心板上手指南</a>
</li>
            
<li>
    <a href="../../stm32/5.XuanWuOS-xwbd-atkf407core/" class="dropdown-item">正点原子F407核心板上手指南</a>
</li>
            
<li>
    <a href="../../stm32/6.XuanWuOS-xwbd-atkf103core/" class="dropdown-item">正点原子F103核心板上手指南</a>
</li>
    </ul>
  </li>
                                    
  <li class="dropdown-submenu">
    <a href="#" class="dropdown-item">Xwko</a>
    <ul class="dropdown-menu">
            
<li>
    <a href="../../xwko/1.XuanWuKO-guide/" class="dropdown-item">玄武内核模块快速上手指南</a>
</li>
    </ul>
  </li>
                                </ul>
                            </li>
                            <li class="dropdown">
                                <a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown">规范 <b class="caret"></b></a>
                                <ul class="dropdown-menu">
                                    
<li>
    <a href="../../../%E8%A7%84%E8%8C%83/git-commit-specification/" class="dropdown-item">git commit规范</a>
</li>
                                    
<li>
    <a href="../../../%E8%A7%84%E8%8C%83/version-branch-specification/" class="dropdown-item">分支与版本号</a>
</li>
                                </ul>
                            </li>
                        </ul>

                    <ul class="nav navbar-nav ml-auto">
                        <li class="nav-item">
                            <a href="#" class="nav-link" data-toggle="modal" data-target="#mkdocs_search_modal">
                                <i class="fa fa-search"></i> 搜索
                            </a>
                        </li>
                            <li class="nav-item">
                                <a rel="prev" href="../1.XuanWuOS-envsetup-guide/" class="nav-link">
                                    <i class="fa fa-arrow-left"></i> 上一篇
                                </a>
                            </li>
                            <li class="nav-item">
                                <a rel="next" href="../../stm32/1.XuanWuOS-envsetup-guide/" class="nav-link">
                                    下一篇 <i class="fa fa-arrow-right"></i>
                                </a>
                            </li>
                    </ul>
                </div>
            </div>
        </div>

        <div class="container">
            <div class="row">
                    <div class="col-md-3"><div class="navbar-light navbar-expand-md bs-sidebar hidden-print affix" role="complementary">
    <div class="navbar-header">
        <button type="button" class="navbar-toggler collapsed" data-toggle="collapse" data-target="#toc-collapse" title="Table of Contents">
            <span class="fa fa-angle-down"></span>
        </button>
    </div>

    
    <div id="toc-collapse" class="navbar-collapse collapse card bg-secondary">
        <ul class="nav flex-column">
            
            <li class="nav-item" data-level="1"><a href="#_1" class="nav-link">工程配置指南</a>
              <ul class="nav flex-column">
            <li class="nav-item" data-level="2"><a href="#_2" class="nav-link">搭建开发环境</a>
              <ul class="nav flex-column">
              </ul>
            </li>
            <li class="nav-item" data-level="2"><a href="#_3" class="nav-link">通过导入方式创建工程</a>
              <ul class="nav flex-column">
              </ul>
            </li>
            <li class="nav-item" data-level="2"><a href="#_11" class="nav-link">编译工程</a>
              <ul class="nav flex-column">
              </ul>
            </li>
            <li class="nav-item" data-level="2"><a href="#_12" class="nav-link">调试</a>
              <ul class="nav flex-column">
              </ul>
            </li>
            <li class="nav-item" data-level="2"><a href="#_14" class="nav-link">重新创建工程</a>
              <ul class="nav flex-column">
              </ul>
            </li>
            <li class="nav-item" data-level="2"><a href="#_16" class="nav-link">增加用户软件</a>
              <ul class="nav flex-column">
              </ul>
            </li>
            <li class="nav-item" data-level="2"><a href="#_17" class="nav-link">附录</a>
              <ul class="nav flex-column">
              </ul>
            </li>
              </ul>
            </li>
        </ul>
    </div>
</div></div>
                    <div class="col-md-9" role="main">

<h1 id="_1">工程配置指南</h1>
<hr />
<hr />
<p>下面以官方的评估板为例，建立一个简单的工程：s32k144evb</p>
<hr />
<h2 id="_2">搭建开发环境</h2>
<ul>
<li><a href="../1.XuanWuOS-envsetup-guide/">《开发环境搭建指南》</a></li>
</ul>
<hr />
<h2 id="_3">通过导入方式创建工程</h2>
<h3 id="_4">下载工程</h3>
<ul>
<li>仓库：<a href="https://gitee.com/xwos/s32k144evb.git">https://gitee.com/xwos/s32k144evb.git</a></li>
<li>命令：</li>
</ul>
<pre><code class="sh">git clone --recursive https://gitee.com/xwos/s32k144evb.git
cd s32k144evb
unzip project-template.zip
</code></pre>

<ul>
<li>工程需要放在S32DS的工作目录内（即S32DS启动时指定的目录），
    并按照上面的命令将<strong>“project-template.zip”</strong>解压到工程目录中，
    这些文件为工程模板。</li>
</ul>
<p><img alt="img" src="../res/figure/S32DS-Project-Folder.png" title="工程目录" /></p>
<h3 id="_5">导入工程</h3>
<p>打开菜单<strong>File --&gt; Import... --&gt; General --&gt; Projects from Folder or Archive</strong></p>
<p><img alt="img" src="../res/figure/S32DS-Import.png" title="导入工程" /></p>
<p>导入后，S32DS会重新生成一次源代码，这会使得部分对SDK的修改被覆盖：</p>
<p><img alt="img" src="../res/figure/S32DS-Regenerate.png" title="S32DS重新生成源码" /></p>
<p>幸好我们使用git管理源码，可使用git命令将这这些文件找回：</p>
<pre><code class="sh">cd s32k144evb
git checkout SDK/platform/devices/status.h
git checkout SDK/rtos/osif/osif.h
</code></pre>

<p>修改的这两个文件可使得玄武OS与S32K的SDK能更好地一起工作，但每次使用S32DS重新生成
代码时，这两个文件都会被覆盖。一劳永逸的方法是将这两个文件覆盖到S32DS的安装目录：</p>
<pre><code class="sh">S32DS的安装目录\S32DS\software\S32SDK_S32K1xx_RTM_3.0.0\platform\devices\status.h
S32DS的安装目录\S32DS\software\S32SDK_S32K1xx_RTM_3.0.0\rtos\osif\osif.h
</code></pre>

<h3 id="_6">工程设置</h3>
<h4 id="_7">文件编码设置</h4>
<p>菜单 <strong>Project &#x2013;&gt; Properties &#x2013;&gt; Resource</strong></p>
<p><img alt="img" src="../res/figure/S32DS-Properties-Resource.png" title="文件编码设置" /></p>
<h4 id="_8">编译设置</h4>
<ul>
<li>菜单<strong>Project &#x2013;&gt; Properties</strong></li>
<li><strong>Debug</strong>和<strong>Release</strong>两个配置都需要增加：</li>
</ul>
<p><img alt="img" src="../res/figure/S32DS-Properties-Build-Settings.png" title="编译设置" /></p>
<p><img alt="img" src="../res/figure/S32DS-Properties-Build-Behavior.png" title="编译行为" /></p>
<h4 id="_9">环境变量设置</h4>
<ul>
<li>菜单<strong>Project &#x2013;&gt; Properties &#x2013;&gt; C/C++ Build &#x2013;&gt; Environment</strong>。</li>
<li>点击<strong>Restore Defaults</strong>先恢复一次默认设置。</li>
<li>设置：<ul>
<li><strong>WKSPC</strong>: <strong>../../../${ConfigName}</strong>；</li>
<li><strong>~V</strong>: <strong>1</strong>；</li>
<li><strong>~D</strong>: <strong>Debug</strong>配置为<strong>1</strong>，<strong>Release</strong>配置为<strong>0</strong>。</li>
</ul>
</li>
<li><strong>Debug</strong>和<strong>Release</strong>两个配置都需要增加。</li>
</ul>
<p><img alt="img" src="../res/figure/S32DS-Properties-Build-Env-Debug.png" title="Debug配置" /></p>
<p><img alt="img" src="../res/figure/S32DS-Properties-Build-Env-Release.png" title="Release配置" /></p>
<h4 id="_10">设置系统搜索路径</h4>
<ul>
<li>修改Debug和Release两个配置的<strong>PATH</strong>环境变量。</li>
</ul>
<p><img alt="img" src="../res/figure/S32DS-Properties-Build-Env-Path-Setting.png" title="Path设置" /></p>
<h2 id="_11">编译工程</h2>
<p><img alt="img" src="../res/figure/S32DS-Build.png" title="编译" /></p>
<h2 id="_12">调试</h2>
<h4 id="jlink">设置JLink调试</h4>
<p><img alt="img" src="../res/figure/Jlink-Main.png" title="Main" /></p>
<p><img alt="img" src="../res/figure/Jlink-Debugger.png" title="Debugger" /></p>
<p><img alt="img" src="../res/figure/Jlink-Startup.png" title="Startup" /></p>
<h4 id="_13">重启调试</h4>
<p>调试过程可能需要复位系统，可以在右键菜单中选择Restart。</p>
<p><img alt="img" src="../res/figure/Jlink-Restart.png" title="重新开始调试" /></p>
<hr />
<h2 id="_14">重新创建工程</h2>
<p>若用户需要自定义工程名称，可通过新建工程的方式，方法：
打开菜单<strong>File &#x2013;&gt; New &#x2013;&gt; S32DS Application Project</strong></p>
<p><img alt="img" src="../res/figure/S32DS-NewApplicationProjectStep1.png" title="新建工程-步骤1" /></p>
<p><img alt="img" src="../res/figure/S32DS-NewApplicationProjectStep2.png" title="新建工程-步骤2" /></p>
<p>新建工程后，S32DS的<strong>Processor Expert</strong>会自动生辰SDK代码，用户需要按照原理图进行配置
后重新生成代码，并将XuanWuOS目录放入工程内部，如图所示：</p>
<p><img alt="img" src="../res/figure/S32DS-Project-Folder.png" title="工程目录" /></p>
<h3 id="cc">C/C++头文件路径设置</h3>
<p>为了能正确地在源码间跳转，需要在IDE中增加头文件路径，但这不影响编译。</p>
<p><img alt="img" src="../res/figure/S32DS-Properties-General-Paths-And-Symbols.png" title="头文件路径" /></p>
<h3 id="_15">增加编译规则</h3>
<p>S32K的SDK是以<strong>玄武模块</strong>中的<strong>OEM模块</strong>的形式集成到玄武OS中的。
有关<strong>玄武模块</strong>可以参考<a href="../../../%E5%BA%94%E7%94%A8%E6%89%8B%E5%86%8C/03.%E6%9E%84%E5%BB%BA%E7%B3%BB%E7%BB%9F/">应用手册——构建系统</a>。</p>
<p>此处需要建立一个<strong>玄武模块</strong>文件夹：<strong>s32dslib</strong>，其中编译规则<strong>xwmo.mk</strong>内如如下：</p>
<pre><code class="makefile"># 引入配置
include $(XWOS_WKSPC_DIR)/XuanWuOS.cfg
include $(XWBS_UTIL_MK_XWMO)

# 增加.c源文件
# 函数$(call getAllFileUnderXwmoDir,*.c,xxx)表示查找xxx目录下的所有.c文件
XWMO_CSRCS :=
XWMO_CSRCS += $(call getAllFileUnderXwmoDir,*.c,../SDK/platform/devices)
XWMO_CSRCS += $(call getAllFileUnderXwmoDir,*.c,../SDK/platform/devices/S32K144/startup)
XWMO_CSRCS += $(call getAllFileUnderXwmoDir,*.c,../SDK/platform/drivers/src/clock/S32K1xx)
XWMO_CSRCS += $(call getAllFileUnderXwmoDir,*.c,../SDK/platform/drivers/src/interrupt)
XWMO_CSRCS += $(call getAllFileUnderXwmoDir,*.c,../SDK/platform/drivers/src/pins)
XWMO_CSRCS += $(call getAllFileUnderXwmoDir,*.c,../SDK/platform/drivers/src/power)
XWMO_CSRCS += $(call getAllFileUnderXwmoDir,*.c,../SDK/platform/drivers/src/power/S32K1xx)
XWMO_CSRCS += $(call getAllFileUnderXwmoDir,*.c,../SDK/platform/drivers/src/wdog)
XWMO_CSRCS += $(call getAllFileUnderXwmoDir,*.c,../SDK/platform/drivers/src/edma)
XWMO_CSRCS += $(call getAllFileUnderXwmoDir,*.c,../SDK/platform/drivers/src/lpuart)
XWMO_CSRCS += $(call getAllFileUnderXwmoDir,*.c,../SDK/platform/drivers/src/lpspi)
XWMO_CSRCS += $(call getAllFileUnderXwmoDir,*.c,../SDK/platform/drivers/src/flexcan)
XWMO_CSRCS += $(call getAllFileUnderXwmoDir,*.c,../Generated_Code)
XWMO_CSRCS += ../SDK/rtos/osif/osif_xwos.c
XWMO_CSRCS += sdkac/weak/isr.c
XWMO_CSRCS += $(call getAllFileUnderXwmoDir,*.c,xwac/xwds)
XWMO_CSRCS += $(call getAllFileUnderXwmoDir,*.c,xwac/xwos)
XWMO_CSRCS += $(call getAllFileUnderXwmoDir,*.c,xwac/isc)
XWMO_CSRCS += $(call getAllFileUnderXwmoDir,*.c,../app)
XWMO_CSRCS += init.c
XWMO_CSRCS += xwmo.c

# 定义编译选项
XWMO_CFLAGS :=
XWMO_CFLAGS += -DCPU_S32K144 -DCPU_S32K144HFT0VLLT -DTURN_ON_CPU0
XWMO_CFLAGS += -Wno-unused-parameter -Wno-error=sign-conversion

# 定义头文件路径
# 函数$(call getXwmoDir)表示获取当前玄武模块的路径
XWMO_INCDIRS :=
XWMO_INCDIRS += $(call getXwmoDir)/..
XWMO_INCDIRS += $(call getXwmoDir)/../Generated_Code
XWMO_INCDIRS += $(call getXwmoDir)/../SDK/rtos/osif
XWMO_INCDIRS += $(call getXwmoDir)/../SDK/platform/drivers/inc
XWMO_INCDIRS += $(call getXwmoDir)/../SDK/platform/drivers/src/clock/S32K1xx
XWMO_INCDIRS += $(call getXwmoDir)/../SDK/platform/drivers/src/power/S32K1xx
XWMO_INCDIRS += $(call getXwmoDir)/../SDK/platform/devices
XWMO_INCDIRS += $(call getXwmoDir)/../SDK/platform/devices/common
XWMO_INCDIRS += $(call getXwmoDir)/../SDK/platform/devices/S32K144/include
XWMO_INCDIRS += $(call getXwmoDir)/../SDK/platform/devices/S32K144/startup

# 引入编译规则
include xwbs/$(XuanWuOS_CFG_XWMO_MK)
</code></pre>

<h3 id="oem">修改OEM模块的路径</h3>
<ul>
<li>配置文件：<strong>XuanWuOS/xwbd/s32k144evb/cfg/XuanWuOS.h</strong></li>
<li>配置项：将<strong>XuanWuOS_CFG_OEMPATH</strong>配置为"<strong>..</strong>"，表示OEM目录为
    “相对于XuanWuOS目录的上级目录”。</li>
</ul>
<pre><code class="C">#define XuanWuOS_CFG_OEMPATH                          ..
</code></pre>

<hr />
<h2 id="_16">增加用户软件</h2>
<p>下面以增加OEM模块为例，说明如何增加用户软件，假定模块名称为app：</p>
<ul>
<li>在工程的根目录下创建文件夹app；</li>
<li>在文件夹app中增加源代码文件；</li>
<li>在文件夹app中创建一个文件xwmo.mk，用于列举源代码文件以及一些编译选项：</li>
</ul>
<pre><code class="makefile"># 引入配置
include $(XWOS_WKSPC_DIR)/XuanWuOS.cfg
include $(XWBS_UTIL_MK_XWMO)

# 增加.c源文件
XWMO_CSRCS :=
XWMO_CSRCS += src1.c src2.c

# 定义编译选项
# 下面例子中，增加了SDK所需要的宏定义
XWMO_CFLAGS :=
XWMO_CFLAGS += -DCPU_S32K144 -DCPU_S32K144HFT0VLLT -DTURN_ON_CPU0
XWMO_CFLAGS += -Wno-unused-parameter -Wno-error=sign-conversion

# 定义头文件路径
# 下面例子中，增加了SDK所需要的头文件路径
# 函数$(call getXwmoDir)表示获取当前玄武模块的路径
XWMO_INCDIRS :=
XWMO_INCDIRS += $(call getXwmoDir)
XWMO_INCDIRS += $(call getXwmoDir)/..
XWMO_INCDIRS += $(call getXwmoDir)/../Generated_Code
XWMO_INCDIRS += $(call getXwmoDir)/../SDK/rtos/osif
XWMO_INCDIRS += $(call getXwmoDir)/../SDK/platform/drivers/inc
XWMO_INCDIRS += $(call getXwmoDir)/../SDK/platform/drivers/src/clock/S32K1xx
XWMO_INCDIRS += $(call getXwmoDir)/../SDK/platform/drivers/src/power/S32K1xx
XWMO_INCDIRS += $(call getXwmoDir)/../SDK/platform/devices
XWMO_INCDIRS += $(call getXwmoDir)/../SDK/platform/devices/common
XWMO_INCDIRS += $(call getXwmoDir)/../SDK/platform/devices/S32K144/include
XWMO_INCDIRS += $(call getXwmoDir)/../SDK/platform/devices/S32K144/startup

# 引入编译规则
include xwbs/$(XuanWuOS_CFG_XWMO_MK)
</code></pre>

<ul>
<li>在配置文件<strong>XuanWuOS/xwbd/s32k144evb/cfg/oem.h</strong>中增加定义：</li>
</ul>
<pre><code class="C">#define OEMCFG_app  1
</code></pre>

<hr />
<h2 id="_17">附录</h2>
<ul>
<li>上一篇 <a href="../1.XuanWuOS-envsetup-guide/">《开发环境搭建指南》</a></li>
</ul></div>
            </div>
        </div>

        <footer class="col-md-12">
            <hr>
            <p>Documentation built with <a href="https://www.mkdocs.org/">MkDocs</a>.</p>
        </footer>
        <script>
            var base_url = "../../..",
                shortcuts = {"help": 191, "next": 78, "previous": 80, "search": 83};
        </script>
        <script src="../../../js/base.js" defer></script>
        <script src="../../../search/main.js" defer></script>

        <div class="modal" id="mkdocs_search_modal" tabindex="-1" role="dialog" aria-labelledby="searchModalLabel" aria-hidden="true">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <div class="modal-header">
                <h4 class="modal-title" id="searchModalLabel">搜索</h4>
                <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
            </div>
            <div class="modal-body">
                <p>
                    在这里所有文档：
                </p>
                <form>
                    <div class="form-group">
                        <input type="search" class="form-control" placeholder="搜索..." id="mkdocs-search-query" title="Type search term here">
                    </div>
                </form>
                <div id="mkdocs-search-results"></div>
            </div>
            <div class="modal-footer">
            </div>
        </div>
    </div>
</div><div class="modal" id="mkdocs_keyboard_modal" tabindex="-1" role="dialog" aria-labelledby="keyboardModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h4 class="modal-title" id="keyboardModalLabel">Keyboard Shortcuts</h4>
                <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
            </div>
            <div class="modal-body">
              <table class="table">
                <thead>
                  <tr>
                    <th style="width: 20%;">Keys</th>
                    <th>Action</th>
                  </tr>
                </thead>
                <tbody>
                  <tr>
                    <td class="help shortcut"><kbd>?</kbd></td>
                    <td>Open this help</td>
                  </tr>
                  <tr>
                    <td class="next shortcut"><kbd>n</kbd></td>
                    <td>Next page</td>
                  </tr>
                  <tr>
                    <td class="prev shortcut"><kbd>p</kbd></td>
                    <td>Previous page</td>
                  </tr>
                  <tr>
                    <td class="search shortcut"><kbd>s</kbd></td>
                    <td>Search</td>
                  </tr>
                </tbody>
              </table>
            </div>
            <div class="modal-footer">
            </div>
        </div>
    </div>
</div>

    </body>
</html>
